# -*- coding: utf-8 -*-

import urllib.parse as p


def url_path_equal(src, target) -> bool:
    first = p.urlparse(src)
    second = p.urlparse(target)

    return first.path == second.path


class LinkNode(object):
    """爬虫目标链接构成的节点树"""

    def __init__(self, url, dom_href=None, depth=0, is_data_node=False, is_parsed=False, is_extracted=False,
                 parent_node=None):
        """

        Args:
            url: 链接地址
            dom_href: dom上的原始href值
            depth: 节点所在的深度
            is_data_node: 是否数据节点
            is_parsed: 是否已解析
            is_extracted: 数据是否已提取
            parent_node: 父节点
        """
        self.url = url
        self.dom_href = dom_href
        self.depth = depth
        self.parent_node = parent_node
        self.is_data_node = is_data_node
        self.is_parsed = is_parsed
        self.is_extracted = is_extracted

        self.sub_nodes = []

    def add_sub_node(self, url, dom_href=None, is_data_node=False) -> 'LinkNode':
        """向当前节点添加一个子节点

        Args:
            url: 子节点的链接
            dom_href: 子节点在dom上的原始href值
            is_data_node: 是否数据节点

        Returns:
            新生成的节点
        """
        node = LinkNode(url, dom_href=dom_href, depth=self.depth + 1, is_data_node=is_data_node)
        node.parent_node = self
        self.sub_nodes.append(node)
        return node
